import checkLogin from "../../utils/checkLogin";
import {bindOpenid, logout} from "../../service/auth";
import {doBack, updateUserInfoCache} from "../../utils/doLogin";
import toast from '../../utils/toast'
import {updateAvatar} from "../../service/user";

Page({

    /**
     * 页面的初始数据
     */
    data: {
        userInfo: {}
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function (options) {
        // 验证是否登录
        checkLogin()
        this.setData({
            userInfo: wx.getStorageSync('userInfo')
        })
    },

    /**
     * 退出登录
     */
    logout() {
        // 1. 请求API, 执行退出
        logout().then(() => {
            // 2. 清除缓存
            wx.removeStorageSync('access_token')
            wx.removeStorageSync('userInfo')
            // 3. 显示提醒, 并跳转
            toast.success('退出成功', () =>{
                this.setData({
                    userInfo: {}
                })
                // 跳转到首页
                wx.reLaunch({
                    url: '/pages/index/index'
                })
            })
        })
    },

    /**
     * 绑定或者解绑
     */
    bindOrUnbind() {
        // 1. 判断是解绑还是绑定
        const {openid} = this.data.userInfo
        let type = 'bind'
        if (openid) type = 'unbind'
        const msg = type == 'bind' ? '绑定' : '解绑'

        wx.showModal({
            title: '提示',
            content: `您确定要${msg}微信吗`,
            success: (res) => {
                if (res.confirm) {
                    this.doBindOrUnbind(type, msg)
                }
            }
        })
    },

    /**
     * 执行绑定或者解绑
     */
    doBindOrUnbind(type, msg) {
        // 2. 发送请求, 执行绑定或者解绑
        const data = {
            type,
            openid: wx.getStorageSync('openid')
            /*
            这里传递的openid, 要从缓存中获取openid, 因为这样可以限制, 只能解绑自己的微信
            如果使用了userInfo的openid, 绑定的时候,没有openid; 解绑的时候,可能会出现登录的别人的账号,
            把别人的账号给解绑了
             */
        }
        bindOpenid(data).then(() => {
            // 4. 重新请求用户信息, 更新缓存
            updateUserInfoCache(res => {
                this.setData({
                    userInfo: res
                })
                // 3. 提示用户绑定成功
                toast.success(msg + '成功')
            })

        })
    },

    /**
     * 获取文件上传后的key
     */
    getFileKey(e) {
        const fileKey = e.detail
        // 1. 请求API, 更新用户头像
        updateAvatar({avatar: fileKey}).then(() => {
            // 2. 更新缓存
            // 绑定完成之后, 更新缓存中的用户信息
            updateUserInfoCache(res => {
                this.setData({
                    userInfo: res
                })
                toast.success('更换成功')
            })
        })

    }
})